package com.bankcard.bininfo.storage;

import com.bankcard.bininfo.model.BinInfo;

import java.util.List;

/**
 * Interface for storing and retrieving BIN (Bank Identification Number) information.
 */
public interface BinInfoStorage {

    /**
     * Adds a new BIN information to the storage.
     *
     * @param binInfo the BIN information to add
     */
    void addBinInfo(BinInfo binInfo);

    /**
     * Retrieves the BIN information for a given BIN.
     *
     * @param bin the BIN to look up
     * @return the BIN information, or null if not found
     */
    BinInfo getBinInfo(String bin);

    /**
     * Updates the BIN information in the storage.
     *
     * @param binInfo the BIN information to update
     */
    void updateBinInfo(BinInfo binInfo);

    /**
     * Retrieves all BIN information from the storage.
     *
     * @return a list of all BIN information
     */
    List<BinInfo> getAllBinInfo();
}